<?php
/**
 * 后台通用函数
 */
/**
 * 获取搜索类型
 * @param string $type 类型
 * @param bool $all 是否返回全部类型
 * @return array|string
 * @author yinq
 */
function get_search_type($type, $all = false)
{
    $list = [
        'name'      => '标识',
        'title'     => '名称',
        'en_title'  => '英文名',
		'adminname' => '用户名',
		'nickname'  => '昵称',
		'email'     => '邮箱',
		'url'       => 'URL',
		'path'      => '路径',
    ];
    
    return $all ? $list : $list[$type];
}

/**
 * 获取打开方式类型
 * @param string $type 类型
 * @param bool $all 是否返回全部类型
 * @return array|string
 * @author yinq
 */
function get_target_type($type, $all = false)
{
    $list = [
        '_self'  => '当前窗口',
        '_blank' => '新窗口'
    ];
    
    return $all ? $list : $list[$type];
}

/**
 * 获取数据的状态
 * @param integer $status
 * @return string 状态文字
 * @return array|string
 * @author yinq
 */
function show_status_op($status)
{
    $list = [
        '0'  => '<font class="text-danger">禁用</font>',
        '1'  => '<font class="text-success">正常</font>',
        '-1' => '<font class="text-primary">删除</font>', 
    ];
    
    return $list[$status];
}

/**
 * 获取字段类型
 * @param string $type 类型
 * @param boolean $all 是否返回全部类型
 */
function get_field_type($type, $all = false)
{
    $list = config('app.site_setting.form_item_type');

    return $all ? $list : $list[$type];
}

/**
 * 获取是否显示
 * @param integer $status 类型
 * @param bool $all 是否返回全部类型
 * @return array|string
 * @author yinq
 */
function get_show_type($status)
{
    $list = [
        '1'  => '<span class="text-success">显示</span>',
        '0'  => '<span class="text-primary">隐藏</span>',
    ];
    
    return $list[$status];
}

/**
 * 获取规则类型
 * @param integer $type
 * @param bool $all 是否返回全部类型
 * @return string|array
 * @author yinq
 */
function get_rule_type($type, $all = false)
{
	$list = [
        '1' => '<span class="badge badge-danger-light">目录</span>',
        '2' => '<span class="badge badge-info-light">菜单</span>',
        '3' => '<span class="badge badge-success-light">按钮</span>',
        '4' => '<span class="badge badge-purple-light">外链</span>',
    ];
    
    return $all ? $list : $list[$type];
}

/**
 * 获取模型类别文字
 * @param string $type 类型
 * @param bool $all 是否返回全部类型
 */
function show_model_type($type, $all = false)
{
    $list = [
        '0' => '<span class="badge badge-outline-danger">系统模型</span>',
        '1' => '<span class="badge badge-outline-success">普通模型</span>',
        '2' => '<span class="badge badge-outline-info">独立模型</span>'
    ];
    
    return $all ? $list : $list[$type];
}

/**
 * 获取广告类型
 * @param integer $type
 * @param bool $all 是否返回全部类型
 * @return string/array
 */
function get_advert_type($type, $all = false)
{
	$list = [
        '0' => '<span class="badge badge-outline-success">代码</span>',
        '1' => '<span class="badge badge-outline-info">文字</span>',
		'2' => '<span class="badge badge-outline-warning">图片</span>',
		'3' => '<span class="badge badge-outline-purple">flash</span>',
    ];
    
    return $all ? $list : $list[$type];
}

/**
 * 获取友情链接类型
 * @param integer $type
 * @param bool $all 是否返回全部类型
 * @return string/array
 */
function get_links_type($type, $all = false)
{
	$list = [
        '1' => '<span class="badge badge-outline-success">文字链接</span>',
        '2' => '<span class="badge badge-outline-warning">图片链接</span>'
    ];
    
    return $all ? $list : $list[$type];
}

/**
 * 获取是否限时文字
 * @param string $type 类型
 * @param bool $all 是否返回全部类型
 */
function get_timeset_type($type, $all = false)
{
    $list = [
        '0' => '<span class="badge badge-success-light">永不过期</span>',
        '1' => '<span class="badge badge-danger-light">限时</span>'
    ];
    
    return $all ? $list : $list[$type];
}

if (!function_exists('is_default_field')) {
    /**
     * 检查是否为系统默认字段
     * @param string $field 字段名称
     * @author 蔡伟明 <314013107@qq.com>
     * @return bool
     */
    function is_default_field($field = '')
    {
        $system_fields = cache('lyear_system_fields');
        if (!$system_fields) {
            $system_fields = model('admin/Field')->where('model_id', 0)->column('en_title');
            cache('lyear_system_fields', $system_fields);
        }
        return in_array($field, $system_fields, true);
    }
}

/**
 * 获取管理员所在角色
 * @param integer $uid
 * @return string
 */
function get_rule_group($aid)
{
	if ($aid == 1) return '超级管理员';
    $groups = model('admin/AuthGroupAccess')->where('aid', $aid)->column('group_id');
	$gname  = model('admin/AuthGroup')->where('id', 'in', implode(',',$groups))->column('title');

	return implode(',', $gname);
}

/**
 * 权限验证
 * @param string $mode check模式
 * @return boolean
 */
function check_rule($rule, $type, $mode = 'url')
{
    $Auth = new \think\Auth();
    if (!$Auth->check($rule, session('admin_auth')['aid'], $type, $mode)) {
        return false;
    }

    return true;
}

/**
 * 数据签名认证
 * @param array $data 被认证的数据
 * @author 蔡伟明 <314013107@qq.com>
 * @return string 签名
 */
function data_auth_sign($data = [])
{
    // 数据类型检测
    if(!is_array($data)){
        $data = (array)$data;
    }

    // 排序
    ksort($data);
    // url编码并生成query字符串
    $code = http_build_query($data);
    // 生成签名
    $sign = sha1($code);
    return $sign;
}

/**
 * 左侧菜单
 * @param array $data
 * @param array $position
 * @author yinq
 */
function echo_sidebar_menu($data, $position)
{
    echo '<ul class="nav nav-subnav">';
    foreach ($data as $k => $child_menu) {
        $tempClass = '';
        if (isset($child_menu['children'])) {
            $tempClass .= 'nav-item nav-item-has-subnav';
            if (!empty($position) && $child_menu['id'] == $position[0]['id']) {
                $tempClass .= ' open';
            }
        } else {
            if (!empty($position) && $child_menu['id'] == $position[0]['id']) {
                $tempClass .= ' active';
            }
        }
        echo '<li class="' . $tempClass . '">';
        $hrefValue = ($child_menu['type'] == 2 || $child_menu['type'] == 4) ? $child_menu['url'] : 'javascript:void(0)';
        $aTarget = ($child_menu['type'] == 4) ? 'target="_blank"' : '';
        echo '<a href="' . $hrefValue . '" ' . $aTarget . '>' . $child_menu['title'] . '</a>';
        $tempPosition = isset($position[0]['children']) ? $position[0]['children'] : [];
        if (isset($child_menu['children'])) echo_sidebar_menu($child_menu['children'], $tempPosition);
        echo '</li>';
    }
    echo '</ul>';
}

/**
 * 权限递归
 * @param array $data
 * @param integer $parentDataId
 * @param array $info
 * @author yinq
 */
function echo_rule_list($data, $parentDataId, $info = [])
{
    foreach ($data as $k => $v) {
        echo '<tr>';

        $level = count(explode('-', $parentDataId));
        $tdClassName = 'p-l-' . 30 * ($level - 1);

        echo '  <td class="' . $tdClassName . '">';
        echo '    <div class="custom-control custom-checkbox">';
      
        $tempClass = '';
        if (isset($v['_child'])) $tempClass .= ' checkbox-parent';
        if ($v['pid'] > 0) $tempClass .= ' checkbox-child';

        $tempIdName = 'roleid-' . $v['id'];
        $tempDataId = $parentDataId . '-' . $v['id'];

        $isChecked  = '';
        if (!empty($info)) {
            if (in_array($v['id'], $info['rules'])) $isChecked .= 'checked';
        }

        echo '      <input type="checkbox" name="rules[]" class="custom-control-input ' . $tempClass . '" id="' . $tempIdName . '"  dataid="' . $tempDataId . '" value="' . $v['id'] . '" ' . $isChecked . '>';
        echo '      <label class="custom-control-label" for="' . $tempIdName . '">' . $v['title'] . '</label>';
        echo '    </div>';
        echo '  </td>';
        echo '</tr>';
        if (isset($v['_child'])) echo_rule_list($v['_child'], $tempDataId, $info);
    }
}

if (!function_exists('clear_js'))
{
    /**
     * 过滤js内容
     * @param string $str 要过滤的字符串
     * @author 蔡伟明 <314013107@qq.com>
     * @return mixed|string
     */
    function clear_js($str = '')
    {
        $search ="/<script[^>]*?>.*?<\/script>/si";
        $str = preg_replace($search, '', $str);
        return $str;
    }
}

if (!function_exists('table_exist')) {
    /**
     * 检查附加表是否存在
     * @param string $table_name 附加表名
     * @author 蔡伟明 <314013107@qq.com>
     * @return string
     */
    function table_exist($table_name = '')
    {
        return true == Db::query("SHOW TABLES LIKE '{$table_name}'");
    }
}

/**
 * 输出附件
 * @param string $path 地址
 * @param string $ext 类型
 */
function show_attachment($path = '', $ext = '', $thumb = '')
{
	if(empty($path || $ext)) return '参数有误';
	
	$str = '';
    if (in_array($ext, ['jpg', 'jpeg', 'png', 'gif', 'bmp'])) {
        $thumb = $thumb != '' ? $thumb : $path;
            $str = '<a class="img-link" title="点击查看" href="'. $path .'"><img class="attachment-image" src="'. $thumb .'"></a>';
    } else {
        if (is_file('./admin/images/files/'. $ext .'.png')) {
            $str = '<a href="'. $path .'" target="_blank" title="点击下载"><img class="attachment-image" src="/admin/images/files/'. $ext .'.png"></a>';
        } else {
            $str = '<a href="'. $path .'" target="_blank" title="点击下载"><img class="attachment-image" src="/admin/images/files/unknow.png"></a>';
        }
    }
	return $str;
}